/*********************************************************
 *  Copyright (c) 2011 by Web Information Systems (WIS) Group, 
 *  Delft University of Technology.
 *  Qi Gao, http://wis.ewi.tudelft.nl/index.php/home-qi-gao
 *  
 *  Some rights reserved.
 *
 *  Contact: q.gao@tudelft.nl
 *
 **********************************************************/
package org.persweb.genius;

import org.persweb.genius.data.ItemsFetcher;
import org.persweb.genius.enrichment.Enrichment;
import org.persweb.genius.model.InterestsProfileImpl;
import org.persweb.genius.model.Profile;
import org.persweb.genius.weight.WeightFunction;

/**
 * The GeniUS configuration of the generic modeling strategy.
 *  
 * @author Qi Gao <a href="mailto:q.gao@tudelft.nl">q.gao@tudelft.nl</a>
 * @version created on Jun 30, 2011 11:44:35 AM
 */
public class GeniusConfiguration {
	
	/** name/identifier of this generic modeling strategy configuration */
	public String name = null;
	
	/** the type of profile, interests profile as default */
	public Profile profile = new InterestsProfileImpl();
	
	/** the item fetcher for fetching data */
	public ItemsFetcher itemsFetcher = null;
	
	/** the enrichment method for the semantic enrichment of item. */
	public Enrichment enrichment = null;
	
	/** the weighting scheme for the generation of the profiles. */
	public WeightFunction weightFuction = null;

	/**
	 * @param name
	 * @param profile
	 * @param itemsFetcher
	 * @param enrichment
	 * @param weightFuction
	 */
	public GeniusConfiguration(String name, Profile profile,
			ItemsFetcher itemsFetcher, Enrichment enrichment,
			WeightFunction weightFuction) {
		super();
		this.name = name;
		this.profile = profile;
		this.itemsFetcher = itemsFetcher;
		this.enrichment = enrichment;
		this.weightFuction = weightFuction;
	}

	/**
	 * @param name
	 * @param itemsFetcher
	 * @param enrichment
	 * @param weightFuction
	 */
	public GeniusConfiguration(String name, ItemsFetcher itemsFetcher,
			Enrichment enrichment, WeightFunction weightFuction) {
		super();
		this.name = name;
		this.itemsFetcher = itemsFetcher;
		this.enrichment = enrichment;
		this.weightFuction = weightFuction;
	}
	
	
	/**
	 * @param name
	 * @param profile
	 * @param itemsFetcher
	 * @param weightFuction
	 */
	public GeniusConfiguration(String name, Profile profile,
			ItemsFetcher itemsFetcher, WeightFunction weightFuction) {
		super();
		this.name = name;
		this.profile = profile;
		this.itemsFetcher = itemsFetcher;
		this.weightFuction = weightFuction;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "GeniusConfiguration [name=" + name + ", profile=" + profile.toString()
				+ ", itemsFetcher=" + itemsFetcher.toString() + ", enrichment="
				+ enrichment !=null ? enrichment.toString() : "Not specified" + ", weightFuction=" + weightFuction.toString() + "]";
	}
	
}
